<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    

<script>
// 1.输入任意数值（整数），使用递归函数计算该数字的阶乘
// 5的阶乘：1*2*3*4*5
// f(5) = 5*f(4)
// f(4) = 4*f(3)
// f(3) = 3*f(2)
// f(2) = 2*f(1)
// f(1) = 1 出口条件

// f(n) = n * f(n-1)
// 当 n==1 时，返回 1

// var num = prompt('请输入一个正整数');
// num = parseInt(num);// 转成整数

// function f(n){
//     // 终止条件
//     if (n == 1) {
//         return 1;
//     }
//     return n * f(n-1);
// }
// console.log( f(num) );



// 2.公园里有一堆桃子，猴子每天吃掉一半，挑出一个坏的扔掉，第6天的时候发现还剩1个桃子，问原来有多少个桃子？
// f(1) = (f(2)+1)*2
// f(2) = (f(3)+1)*2
// f(3) = (f(4)+1)*2
// f(4) = (f(5)+1)*2
// f(5) = (f(6)+1)*2
// f(6) = 1 终止条件

// f(n) = (f(n+1)+1)*2
// 当 n==6 时，返回 1

// function f(n){
//     // 终止条件
//     if (n == 6) {
//         return 1;
//     }
//     return (f(n+1)+1)*2;
// }
// console.log( f(1) );// 94
// console.log( f(5) );// 4



// 3.输入任意数值（整数），输入n为偶数时，调用递归函数求1 / 2 + 1 / 4 + …+1 / n，当输入n为奇数时，调用递归函数求1 / 1 + 1 / 3 + …+1 / n
var num = prompt('请输入一个正整数');
num = parseInt(num);// 转成整数

// f(8) = 1/8 + f(6)
// f(6) = 1/6 + f(4)
// f(4) = 1/4 + f(2)
// f(2) = 1/2 出口
// f(n) = 1/n + f(n-2)
// 当 n==2 时，返回 1/2

// f(7) = 1/7 + f(5)
// f(5) = 1/5 + f(3)
// f(3) = 1/3 + f(1)
// f(1) = 1
// f(n) = 1/n + f(n-2)
// 当 n==1 时，返回 1

function f(n){
    // 终止条件
    if (n == 1) {
        return 1;
    }
    if (n == 2) {
        return 1/2;
    }
    return 1/n + f(n-2);
}
console.log( f(num) );

</script>
</body>
</html>